package hyl.base.net.pg;

import hyl.base.net.IpgReader;
import hyl.core.MyFun;
import hyl.core.fun.MyByte;

/**
 * 格式:类型+来源.len+窗口.len+内容.len+来源+窗口+内容
 * 
 * @author 37798955@qq.com
 *
 */
public class Netpg2ChatMsg {
	// 0
	int _类型 = 0;
	// 1
	String _来源;
	// 2
	byte[] _窗口;
	// 3
	String _内容;

	IpgReader _读端口;

	public Netpg2ChatMsg(byte[] data) {
		ini(data);
	}

	public void ini(byte[] data) {
		/*
		 * 注意无需指定最后一个字节长度 ,因为这是第二层封装包
		 */
		_类型 = MyFun.byteArray2Int(MyByte.subBytes(data, 0, 4));
		int l1 = MyFun.byteArray2Int(MyByte.subBytes(data, 4, 4));
		int l2 = MyFun.byteArray2Int(MyByte.subBytes(data, 8, 4));
		int start = 12;
		_来源 = MyFun.bytes2U8str(MyByte.subBytes(data, start, l1));
		start += l1;
		_窗口 = MyByte.subBytes(data, start, l2);
		start += l2;
		_内容 = MyFun.bytes2U8str(MyByte.subBytes(data, start));
	}

	public byte[] getSendBytes() {
		byte[] b1 = MyFun.u8str2Bytes(_来源);
		byte[] b3 = MyFun.u8str2Bytes(_内容);
		byte[] l1 = MyFun.int2ByteArray((b1 == null) ? 0 : b1.length);
		byte[] l2 = MyFun.int2ByteArray((_窗口 == null) ? 0 : _窗口.length);
		return MyFun.concat(MyFun.int2ByteArray(_类型), l1, l2,  b1, _窗口, b3);

	}

	public String toString() {
		String s = MyFun.join("类型=", _类型, "来源=", _来源, "窗口=", MyFun.bytes2U8str(_窗口), ";_内容=", _内容);
		return s;
	}

	public int get_类型() {
		return _类型;
	}

	public void set_类型(int _类型) {
		this._类型 = _类型;
	}

	public String get_来源() {
		return _来源;
	}

	public void set_来源(String _来源) {
		this._来源 = _来源;
	}

	public byte[] get_窗口() {
		return _窗口;
	}

	public void set_窗口(byte[] _窗口) {
		this._窗口 = _窗口;
	}

	public String get_内容() {
		return _内容;
	}

	public void set_内容(String _内容) {
		this._内容 = _内容;
	}

}
